

import java.io.*;


class CharYazicisi extends Thread {


	String[] cDizi = {
		"Elma", "Armut", "Muz", "Kiraz"
	};

	Writer yazici ;

	public CharYazicisi(String isim, Writer yazici) {
		super(isim);
		this.yazici = yazici;
	}

	public void run() {
		try {

			BufferedWriter bw = new BufferedWriter(yazici);
			for (int i=0; i<cDizi.length; i++) {
				bw.write(cDizi[i]+"\r\n");
				System.out.println(currentThread().getName()+" - yazilan = "+cDizi[i]);
			}

			System.out.println(currentThread().getName()+" yazma islemi bitti");
			bw.close(); // dikkat

		} catch (IOException ioEx) {
			ioEx.printStackTrace();// hatayi detaylariyla ekrana yansit
		}
	}
}

class CharOkuyucu extends Thread {

	Reader okuyucu  ;

	public CharOkuyucu(String isim, Reader okuyucu) {
		super(isim);
		this.okuyucu = okuyucu ;
	}

	public void run() {

		try {

			BufferedReader br = new BufferedReader(okuyucu);
			String okunan; 
			while ( (okunan=br.readLine()) != null) {
				System.out.println(currentThread().getName()+" - okunan = "+okunan);
			}

			System.out.println(currentThread().getName()+" okunma islemi bitti");
			br.close(); // dikkat

		} catch (IOException ioEx) {
			ioEx.printStackTrace();// hatayi detaylariyla ekrana yansit
		}
	}
}


public class CharBaglanti {

	public static void main(String[] args) throws IOException{ 

		PipedWriter yazici = new PipedWriter();
		
		PipedReader okuyucu = new PipedReader(yazici);  // dikkat

		CharYazicisi cy = new CharYazicisi("CharYazicisi", yazici);
		CharOkuyucu co  = new CharOkuyucu("CharOkuyucu", okuyucu);

		// is parcaciklari baslatiliyor
		cy.start();
		co.start();
	}
}
